/*
wwww.tigir.com - 14.06.2006
Ð‘Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ° hltable.js Ð¸Ð· ÑÑ‚Ð°Ñ‚ÑŒÐ¸ "ÐŸÐ¾Ð´ÑÐ²ÐµÑ‡Ð¸Ð²Ð°Ð½Ð¸Ðµ ÑÑ‚Ñ€Ð¾Ðº Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹" - http://www.tigir.com/highlight_table_rows.htm
*/

function highlightTableRows(tableId, hoverClass, clickClass, multiple)
{
	var table = document.getElementById(tableId);
	
	//ÐµÑÐ»Ð¸ Ð½Ðµ Ð±Ñ‹Ð» Ð¿ÐµÑ€ÐµÐ´Ð°Ð½ Ñ‡ÐµÑ‚Ð²ÐµÑ€Ñ‚Ñ‹Ð¹ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚, Ñ‚Ð¾ Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÐµÐ¼ ÐµÐ³Ð¾ ÐºÐ°Ðº true
	if (typeof multiple == 'undefined') multiple = true;
	
	if (hoverClass)
	{
		//Ñ€ÐµÐ³ÑƒÐ»ÑÑ€Ð½Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ Ð¿Ð¾Ð¸ÑÐºÐ° ÑÑ€ÐµÐ´Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° class ÑÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð°, Ð¸Ð¼ÐµÐ½Ð¸ ÐºÐ»Ð°ÑÑÐ° Ð¾Ð±ÐµÑÐ¿ÐµÑ‡Ð¸Ð²Ð°ÑŽÑ‰ÐµÐ³Ð¾ Ð¿Ð¾Ð´ÑÐ²ÐµÑ‚ÐºÑƒ Ð¿Ð¾ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸ÑŽ Ð¼Ñ‹ÑˆÐ¸ Ð½Ð° ÑÑ‚Ñ€Ð¾ÐºÑƒ.
		//Ð”Ð°Ð½Ð½Ð¾Ðµ Ñ€ÐµÐ³. Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ÑÑ Ð¸ Ð² Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐµ onclick
		var hoverClassReg = new RegExp("\\b"+hoverClass+"\\b");
		
		table.onmouseover = table.onmouseout = function(e)
		{
			if (!e) e = window.event;
			var elem = e.target || e.srcElement;
			while (!elem.tagName || !elem.tagName.match(/td|th|table/i)) elem = elem.parentNode;

			//Ð•ÑÐ»Ð¸ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ðµ ÑÐ²ÑÐ·Ð°Ð½Ð¾ Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ TD Ð¸Ð»Ð¸ TH Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° TBODY
			if (elem.parentNode.tagName == 'TR' && elem.parentNode.parentNode.tagName == 'TBODY')
			{
				var row = elem.parentNode;//Ñ€ÑÐ´ ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‰Ð¸Ð¹ ÑÑ‡ÐµÐ¹ÐºÑƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ Ð¿Ñ€Ð¾Ð¸Ð·Ð¾ÑˆÐ»Ð¾ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ðµ
				//Ð•ÑÐ»Ð¸ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ Ñ€ÑÐ´ Ð½Ðµ "ÐºÐ»Ð¸ÐºÐ½ÑƒÑ‚Ñ‹Ð¹" Ñ€ÑÐ´, Ñ‚Ð¾ Ð² Ñ€Ð°Ð·Ð¸ÑÐ¸Ð¼Ð¾ÑÑ‚Ð¸ Ð¾Ñ‚ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð»Ð¸Ð±Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑÐµÐ¼ ÑÑ‚Ð¸Ð»ÑŒ, Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°Ñ ÐºÐ»Ð°ÑÑ, Ð»Ð¸Ð±Ð¾ ÑƒÐ±Ð¸Ñ€Ð°ÐµÐ¼.
				if (!row.getAttribute('clickedRow')) row.className = e.type=="mouseover"?row.className+" "+hoverClass:row.className.replace(hoverClassReg," ");
			}
		};
	}

	
	if (clickClass) table.onclick = function(e)
	{
		if (!e) e = window.event;
		var elem = e.target || e.srcElement;
		while (!elem.tagName || !elem.tagName.match(/td|th|table/i)) elem = elem.parentNode;

		//Ð•ÑÐ»Ð¸ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ðµ ÑÐ²ÑÐ·Ð°Ð½Ð¾ Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ TD Ð¸Ð»Ð¸ TH Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° TBODY
		if (elem.parentNode.tagName == 'TR' && elem.parentNode.parentNode.tagName == 'TBODY')
		{
			//Ñ€ÐµÐ³ÑƒÐ»ÑÑ€Ð½Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ Ð¿Ð¾Ð¸ÑÐºÐ° ÑÑ€ÐµÐ´Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° class ÑÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð°, Ð¸Ð¼ÐµÐ½Ð¸ ÐºÐ»Ð°ÑÑÐ° Ð¾Ð±ÐµÑÐ¿ÐµÑ‡Ð¸Ð²Ð°ÑŽÑ‰ÐµÐ³Ð¾ Ð¿Ð¾Ð´ÑÐ²ÐµÑ‚ÐºÑƒ Ð¿Ð¾ ÐºÐ»Ð¸ÐºÑƒ Ð½Ð° ÑÑ‚Ñ€Ð¾ÐºÐµ.
			var clickClassReg = new RegExp("\\b"+clickClass+"\\b");
			var row = elem.parentNode;//Ñ€ÑÐ´ ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‰Ð¸Ð¹ ÑÑ‡ÐµÐ¹ÐºÑƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ Ð¿Ñ€Ð¾Ð¸Ð·Ð¾ÑˆÐ»Ð¾ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ðµ
			
			//Ð•ÑÐ»Ð¸ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ Ñ€ÑÐ´ ÑƒÐ¶Ðµ Ð¿Ð¾Ð¼ÐµÑ‡ÐµÐ½ ÑÑ‚Ð¸Ð»ÐµÐ¼ ÐºÐ°Ðº "ÐºÐ»Ð¸ÐºÐ½ÑƒÑ‚Ñ‹Ð¹"
			if (row.getAttribute('clickedRow'))
			{
				row.removeAttribute('clickedRow');//ÑƒÐ±Ð¸Ñ€Ð°ÐµÐ¼ Ñ„Ð»Ð°Ð³ Ñ‚Ð¾Ð³Ð¾ Ñ‡Ñ‚Ð¾ Ñ€ÑÐ´ "ÐºÐ»Ð¸ÐºÐ½ÑƒÑ‚"
				row.className = row.className.replace(clickClassReg, "");//ÑƒÐ±Ð¸Ñ€Ð°ÐµÐ¼ ÑÑ‚Ð¸Ð»ÑŒ Ð´Ð»Ñ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÐ»Ð¸ÐºÐ¾Ð¼
				row.className += " "+hoverClass;//Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°ÐµÐ¼ ÐºÐ»Ð°ÑÑ Ð´Ð»Ñ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑ‚Ñ€Ð¾ÐºÐ¸ Ð¿Ð¾ Ð½Ð°Ð²ÐµÐ´ÐµÑŽ Ð¼Ñ‹ÑˆÐ¸, Ñ‚.Ðº. ÐºÑƒÑ€ÑÐ¾Ñ€ Ð¼Ñ‹ÑˆÐ¸ Ð² Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚ Ð½Ð° ÑÑ‚Ñ€Ð¾ÐºÐµ, Ð° Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ð¾ ÐºÐ»Ð¸ÐºÑƒ ÑƒÐ¶Ðµ ÑÐ½ÑÑ‚Ð¾
			}
			else //Ñ€ÑÐ´ Ð½Ðµ Ð¿Ð¾Ð´ÑÐ²ÐµÑ‡ÐµÐ½
			{
				//ÐµÑÐ»Ð¸ Ð·Ð°Ð´Ð°Ð½Ð° Ð¿Ð¾Ð´ÑÐ²ÐµÑ‚ÐºÐ° Ð¿Ð¾ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸ÑŽ Ð½Ð° ÑÑ‚Ñ€Ð¾ÐºÑƒ, Ñ‚Ð¾ ÑƒÐ±Ð¸Ñ€Ð°ÐµÐ¼ ÐµÑ‘
				if (hoverClass) row.className = row.className.replace(hoverClassReg, "");
				row.className += " "+clickClass;//Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑÐµÐ¼ ÐºÐ»Ð°ÑÑ Ð¿Ð¾Ð´ÑÐ²ÐµÑ‚ÐºÐ¸ Ð¿Ð¾ ÐºÐ»Ð¸ÐºÑƒ
				row.setAttribute('clickedRow', true);//ÑƒÑÑ‚Ð°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÐ¼ Ñ„Ð»Ð°Ð³ Ñ‚Ð¾Ð³Ð¾, Ñ‡Ñ‚Ð¾ Ñ€ÑÐ´ ÐºÐ»Ð¸ÐºÐ½ÑƒÑ‚ Ð¸ Ð¿Ð¾Ð´ÑÐ²ÐµÑ‡ÐµÐ½
				
				//ÐµÑÐ»Ð¸ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð° Ð¿Ð¾Ð´ÑÐ²ÐµÑ‚ÐºÐ° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½ÐµÐ¹ ÐºÐ»Ð¸ÐºÐ½ÑƒÑ‚Ð¾Ð¹ ÑÑ‚Ñ€Ð¾ÐºÐ¸
				if (!multiple)
				{
					var lastRowI = table.getAttribute("lastClickedRowI");
					//Ð•ÑÐ»Ð¸ Ñ‚Ð¾ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ ÑÑ‚Ñ€Ð¾ÐºÐ¸ Ð±Ñ‹Ð»Ð° ÐºÐ»Ð¸ÐºÐ½ÑƒÑ‚Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ ÑÑ‚Ñ€Ð¾ÐºÐ°, Ñ‚Ð¾ ÑÐ½Ð¸Ð¼Ð°ÐµÐ¼ Ñ Ð½ÐµÑ‘ Ð¿Ð¾Ð´ÑÐ²ÐµÑ‚ÐºÑƒ Ð¸ Ñ„Ð»Ð°Ð³ "ÐºÐ»Ð¸ÐºÐ½ÑƒÑ‚Ð¾ÑÑ‚Ð¸"
					if (lastRowI!==null && lastRowI!=='' && row.sectionRowIndex!=lastRowI)
					{
						var lastRow = table.tBodies[0].rows[lastRowI];
						lastRow.className = lastRow.className.replace(clickClassReg, "");//ÑÐ½Ð¸Ð¼Ð°ÐµÐ¼ Ð¿Ð¾Ð´ÑÐ²ÐµÑ‚ÐºÑƒ Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ ÐºÐ»Ð¸ÐºÐ½ÑƒÑ‚Ð¾Ð¹ ÑÑ‚Ñ€Ð¾ÐºÐ¸
						lastRow.removeAttribute('clickedRow');//ÑƒÐ´Ð°Ð»ÑÐµÐ¼ Ñ„Ð»Ð°Ð³ "ÐºÐ»Ð¸ÐºÐ½ÑƒÑ‚Ð¾ÑÑ‚Ð¸" Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ ÐºÐ»Ð¸ÐºÐ½ÑƒÑ‚Ð¾Ð¹ ÑÑ‚Ñ€Ð¾ÐºÐ¸
					}
				}
				//Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°ÐµÐ¼ Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½ÐµÐ³Ð¾ ÐºÐ»Ð¸ÐºÐ½ÑƒÑ‚Ð¾Ð³Ð¾ Ñ€ÑÐ´Ð°
				table.setAttribute("lastClickedRowI", row.sectionRowIndex);
			}
		}
	};
}